<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;


class TuanController extends Controller
{
    /*将剩余时间的秒数转化成时分秒的格式*/
    static public function shengyu($num) {
        // 计算小时
        $shi = floor($num / 3600);
        $num -= $shi * 3600;
        // 计算分钟
        $fen = floor($num / 60);
        $num -= $fen * 60;
        // 计算秒
        $miao = $num;
        return $shi.'小时'.$fen.'分'.$miao.'秒';        
    }

    /*后台团购列表*/
    public function getIndex() {

        // 获得所有团购信息
        $date = DB::table('tuan') -> get();

        // 计算每个团购的剩余时间
        foreach($date as $k => $v){
            $num = $v['end'] - time();
            if($num <= 0){
                $num = 0;
            }
            $shengyu = self::shengyu($num);
            $date[$k]['shengyu'] = $shengyu;
        }

        // 引用模板
        return view('admin/tuan/index',['date'=>$date]);
    }   

    /*添加页面*/
    public function getAdd() {
        // 引用模板
        return view('admin/tuan/add');
    }

    /*执行插入操作*/
    public function postInsert(Request $request) {
        // 表单验证
        $this -> validate($request,[
            'gid' => 'required',
            'nprice' => 'required',
            'count' => 'required',
            'end_date' => 'required',
            'end_time' => 'required',
            'status' => 'required'
        ],[
            'required' => ':attribute是必须的'
        ]);

        // 获取表单数据
        $date = $request -> only(['gid','nprice','count','status']);

        // 计算结束时间戳
        $date['end'] = strtotime($request -> input('end_date').' '.$request -> input('end_time'));
       
        // 执行插入数据库操作
        $res = DB::table('tuan') -> insert($date);

        // 判断插入操作结果并引用模板显示
        if($res){
            return redirect('admin/tuan/index') -> with('success','添加团购成功,添加的商品id为'.$date['gid']);
        }else{
            $request -> flash();
            return back() -> with('error','添加团购失败');
        }
    }

    /*删除*/
    public function getDelete(Request $request) {
        // 验证是否有id
        $this -> validate($request,[
            'id' => 'required'
        ],[
            'required' => ':attribute是必须的'
        ]);

        // 获取id
        $id = $request -> input('id');

        // 执行删除操作
        $res = DB::table('tuan') -> where('tuid',$id) -> delete();

        // 判断删除结果,并引用模板
        if($res > 0){
            return redirect('admin/tuan/index') -> with('success','删除团购成功');
        }else{
            $request -> flash();
            return back() -> with('error','删除团购失败');
        }
    }

    /*修改页面*/
    public function getEdit(Request $request) {
        // 验证是否有id
        $this -> validate($request,[
            'id' => 'required'
        ],[
            'required' => ':attribute是必须的'
        ]);

        // 提取数据
        $id = $request -> input('id');
        $date = DB::table('tuan') -> where('tuid',$id) -> first();
        $date['end_date'] = date('Y-m-d',$date['end']);
        $date['end_time'] = date('H:i',$date['end']);
        $date['tuid'] = $id;

        // 引用模板
        return view('admin/tuan/edit',['date'=>$date]);
    }

    /*执行修改*/
    public function postUpdate(Request $request) {
        // 验证表单
        $this -> validate($request,[
            'tuid' => 'required',
            'gid' => 'required',
            'nprice' => 'required',
            'count' => 'required',
            'end_date' => 'required',
            'end_time' => 'required',
            'status' => 'required'
        ],[
            'required' => ':attribute是必须的'
        ]);

        // 获取数据
        $id = $request -> input('tuid');
        $date = $request -> only(['gid','nprice','count','status']);
        $date['end'] = strtotime($request -> input('end_date').' '.$request -> input('end_time'));
        
        // 执行更新操作
        $res = DB::table('tuan') -> where('tuid',$id) -> update($date);

        // 判断更新结果,引用模板显示
        if($res){
            return redirect('admin/tuan/index') -> with('success','修改团购成功,修改的商品id为'.$date['gid']);
        }else{
            $request -> flash();
            return back() -> with('error','修改团购失败');
        }
    }

    /*上线操作*/
    public function getUp(Request $request) {

        // 验证是否有id
        $this -> validate($request,[
            'id' => 'required'
        ],[
            'required' => ':attribute是必须的'
        ]);

        // 获得id
        $id = $request -> input('id');

        // 判断是否已上线
        if(DB::table('tuan') -> where('tuid',$id) -> first()['status'] == 1){
            return redirect('admin/tuan/index') -> with('warning','本团购已上线,不可重复操作');
        }

        // 执行上线更新操作
        $res = DB::table('tuan') -> where('tuid',$id) -> update(['status' => 1]);

        // 判断更新结果
        if($res > 0){
            return redirect('admin/tuan/index') -> with('success','团购上线成功');
        }else{
            $request -> flash();
            return back() -> with('error','团购上线失败');
        }

    }

    /*下线操作*/
    public function getDown(Request $request) {
         // 验证是否有id
        $this -> validate($request,[
            'id' => 'required'
        ],[
            'required' => ':attribute是必须的'
        ]);

        // 获得id
        $id = $request -> input('id');

        // 判断是否有
        if(DB::table('tuan') -> where('tuid',$id) -> first()['status'] == 2){
            return redirect('admin/tuan/index') -> with('warning','本团购已下线,不可重复操作');
        }

        // 执行下线更新操作
        $res = DB::table('tuan') -> where('tuid',$id) -> update(['status' => 2]);

        // 判断更新结果
        if($res > 0){
            return redirect('admin/tuan/index') -> with('success','团购下线成功');
        }else{
            $request -> flash();
            return back() -> with('error','团购下线失败');
        }
    }

}
